In a typical graphics subsystem, a graphics processing unit (GPU) used to process three dimensional (3D) graphics includes a plurality of execution units that executes shaders. In some cases, a shader is code that performs a graphics function. A shader may include a sample instruction within the shader code. The sample instruction may sample texture information that is used to render computer graphics. The sample instruction can be executed in a number of ways, such as using a dedicated GPU hardware component that takes as input the sample instruction and a GPU state from the execution unit, and outputs a texel value. In some cases, the dedicated hardware component is a sampler unit. A programmable engine may also be used to determine texel values from a sample instruction. Texture coordinates computed by sampler unit may be used to derive texel values from the texture map, which are returned to execution units in response to sample instruction.
In some cases, there are multiple execution units on which multiple shaders are running concurrently, each shader exercising multiple sample instructions. A group of execution units and associated sampler units may be referred to as a sub-slice. In some cases, a slice is a group of more than one sub-slices. Each sampler unit is designed to execute the sample instructions in an efficient manner. However, the gate count attributed to the sampler unit may be relatively high and can contribute substantially to the power consumed by the GPU. Additionally, depending on the type of shader dispatched to a sub-slice, the sampler unit access generated by each sub-slice varies. As a result, sampler units across sub-slices and slices are not uniformly loaded with sample instructions.
The same numbers are used throughout the disclosure and the figures to reference like components and features. Numbers in the 100 series refer to features originally found in FIG. 1; numbers in the 200 series refer to features originally found in FIG. 2; and so on.